/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

import { createSlice } from '@reduxjs/toolkit';

import { RootState } from '@/app/store';

const initialState: {
  show: boolean;
  type?: 'data-scope-changed' | 'scope-config-changed';
  payload?: {
    pname?: string;
    blueprintId: ID;
  };
} = {
  show: false,
};

export const tipsSlice = createSlice({
  name: 'tips',
  initialState,
  reducers: {
    showTips: (state, action) => {
      state.show = true;
      state.type = action.payload.type;
      state.payload = action.payload.payload;
    },
    hideTips: (state) => {
      state.show = false;
      state.type = undefined;
    },
  },
});

export const { showTips, hideTips } = tipsSlice.actions;

export default tipsSlice.reducer;

export const selectTipsShow = (state: RootState) => state.tips.show;

export const selectTipsType = (state: RootState) => state.tips.type;

export const selectTipsPayload = (state: RootState) => state.tips.payload;
